/**
 * Project Name:fire-industry-DM-center
 * File Name:IMyElasticsearchService.java
 * Package Name:com.firestone.service.elasticsearch
 * Date:2018年4月17日上午11:29:22
 *
*/

package com.firestone.service.elasticsearch;

import java.util.Map;

import org.elasticsearch.index.query.QueryBuilder;

/**
 * @Description: TODO(自定义es查询)
 * @author CAIYJ
 * @date 2018年4月17日 上午11:29:22
 */
public interface IMyElasticsearchService {

    /**
     * @Description: TODO(nested结构聚合)
     * @param queryBuilder
     * @param nestedName
     * @param nestedPath
     * @param termName
     * @param termField
     * @param clazz
     *            elasticsearch基础配置bean
     * @return
     * @throws Exception
     * @author CAIYJ
     * @date 2018年4月17日 上午11:35:12
     * @lastModifier CAIYJ
     */
    <T> Map<String, Long> nestedAggs(QueryBuilder queryBuilder,
            String nestedName, String nestedPath, String termName,
            String termField, Class<T> clazz) throws Exception;

    /**
     * @Description: TODO(terms聚合)
     * @param queryBuilder
     * @param termName
     * @param termField
     * @param clazz
     *            elasticsearch基础配置bean
     * @return
     * @throws Exception
     * @author CAIYJ
     * @date 2018年4月17日 上午11:35:48
     * @lastModifier CAIYJ
     */
    <T> Map<String, Long> termAggs(QueryBuilder queryBuilder, String termName,
            String termField, Class<T> clazz) throws Exception;
}
